package br.com.ff.commons.session;

import javax.ejb.Local;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import br.com.ff.cliente.dao.ClienteDAO;
import br.com.ff.cliente.dao.ClienteDAOImpl;
import br.com.ff.equipamento.dao.EquipamentoDAO;
import br.com.ff.equipamento.dao.EquipamentoDAOImpl;
import br.com.ff.tipoveiculo.dao.TipoVeiculoDAO;
import br.com.ff.tipoveiculo.dao.TipoVeiculoDAOImpl;
import br.com.ff.usuario.dao.UsuarioDAO;
import br.com.ff.usuario.dao.UsuarioDAOImpl;
import br.com.ff.veiculo.dao.VeiculoDAO;
import br.com.ff.veiculo.dao.VeiculoDAOImpl;
import br.com.ff.versao.dao.VersaDAO;
import br.com.ff.versao.dao.VersaoDAOImpl;

@Stateless
@Local(Repositorio.class)
public class RepositorioSessionBean implements Repositorio{

	@PersistenceContext
	EntityManager entityManager;
	
	/**
	 * Retorna um TipoVeiculoDAO.
	 */
	@Override
	@TransactionAttribute(TransactionAttributeType.NEVER)
	public TipoVeiculoDAO getTipoVeiculoDAO() {
		return new TipoVeiculoDAOImpl(entityManager);
	}

	/**
	 * Retorna um UsuarioDAO.
	 */
	@Override
	@TransactionAttribute(TransactionAttributeType.NEVER)
	public UsuarioDAO getUsuarioDAO() {
		return new UsuarioDAOImpl(entityManager);
	}

	/**
	 * Retorna um VersaoDAO.
	 */
	@Override
	public VersaDAO getVersaoDAO() {
		return new VersaoDAOImpl(entityManager);
	}
	
	/**
	 * Retorna um EquipamentoDAO.
	 */
	@Override
	public EquipamentoDAO getEquipamentoDAO() {
		return new EquipamentoDAOImpl(entityManager);
	}

	/**
	 * Retorna um ClienteDAO.
	 */
	@Override
	public ClienteDAO getClienteDAO() {
		return new ClienteDAOImpl(entityManager);
	}

	@Override
	public VeiculoDAO getVeiculoDAO() {
		return new VeiculoDAOImpl(entityManager);
	}

}
